package cn.edu.zafu.bigdata.x.wgj.j;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {
    public static void main(String[] args) {
        try {
            // 创建ServerSocket并指定监听端口，这里使用8888端口，可根据需要修改
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("服务器已启动，等待客户端连接...");

            // 等待客户端连接，此方法会阻塞直到有客户端连接
            Socket clientSocket = serverSocket.accept();
            System.out.println("客户端已连接");

            // 获取输入流，用于读取客户端发送的消息
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            // 获取输出流，用于向客户端发送回复消息
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

            BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
            while (true) {
                // 读取客户端发送的消息
                String clientMessage = in.readLine();
                if (clientMessage == null) {
                    // 如果客户端关闭连接，读取到的消息为null，此时退出循环
                    break;
                }
                System.out.println("客户端说： " + clientMessage);

                // 提示服务端输入回复消息
                System.out.print("请输入回复客户端的消息（输入'exit'结束聊天）：");
                String serverReply = consoleReader.readLine();
                if ("exit".equals(serverReply)) {
                    break;
                }
                out.println(serverReply);
                System.out.println("向客户端回复： " + serverReply);
            }

            // 关闭相关资源
            clientSocket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}